package com.atguigu.gmall.product.rpc;

import com.atguigu.gmall.common.result.Result;
import com.atguigu.gmall.model.product.SkuImage;
import com.atguigu.gmall.model.product.SkuInfo;
import com.atguigu.gmall.model.product.SpuSaleAttr;
import com.atguigu.gmall.product.service.SkuImageService;
import com.atguigu.gmall.product.service.SkuInfoService;
import com.atguigu.gmall.product.service.SkuSaleAttrValueService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/rpc/inner/product")
public class SkuRpcController {
    //改动
    @Autowired
    SkuInfoService skuInfoService;
    @Autowired
    SkuImageService skuImageService;

    @Autowired
    SkuSaleAttrValueService skuSaleAttrValueService;
    /**
     * 查询skuInfo信息
     * @param skuId
     * @return
     */
    @GetMapping("skuInfo/{skuId}")
    public Result<SkuInfo> getSkuInfo(@PathVariable("skuId") Long skuId){

        SkuInfo byId = skuInfoService.getById(skuId);
        //查询skuImage
        QueryWrapper<SkuImage> skuImageQueryWrapper = new QueryWrapper<SkuImage>();
        skuImageQueryWrapper.eq("sku_id", skuId);
        List<SkuImage> list = skuImageService.list(skuImageQueryWrapper);
        byId.setSkuImageList(list);
        return Result.ok(byId);
    }

    /**
     * 商品服务的远程查价格
     * @param skuId
     * @return
     */
    @GetMapping("skuInfo/price/{skuId}")
    public  Result<BigDecimal> getSkuPrice(@PathVariable("skuId") Long skuId){
       BigDecimal price =skuInfoService.getSkuPrice(skuId);
       return Result.ok(price);
    }

    /**
     * 查询sku对应的spu的销售属性和值
     * @return
     */
    @GetMapping("skuInfo/sup/saleattrndvalue/{skuId}")
    public Result<List<SpuSaleAttr>> getSkuSaleAttrAndValue(@PathVariable("skuId") Long skuId){
            List<SpuSaleAttr> saleAttrs=skuInfoService.getSkuSaleAttrAndValue(skuId);
            return Result.ok(saleAttrs);
    }

    /**
     * 查询{"40":"106|109"
     * "41":"107|109"
     * "49":"107|109"}
     * @param skuId
     * @return
     */
    @GetMapping("/skuInfo/valuejson/{skuId}")
    public Result<Map<String,String>> getSkuValueJson(@PathVariable("skuId") Long skuId){

          Map<String,String> valueJson =skuSaleAttrValueService.getSkuValueJson(skuId);

        return Result.ok(valueJson);
    }

}
